home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The PC-SIG Library 10
/
The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso
/
PC_SIGCD
/
10
/
9
/
DISK1095.ZIP
/
WHERELST.PRG
< prev
next >
Wrap
Text File
|
1980-01-01
|
5KB
|
161 lines
*
* WHERELST
* PREPARE WHERE USED ANALYSIS FOR ONE COMPONENT OR SUBASSEMBLY
SET HEADING OFF
SET SAFETY OFF
SET STATUS OFF
CLEAR
CLEAR ALL
SET TALK OFF
SET BELL OFF
STORE SPACE(80) TO BLANK
@ 1,22 SAY "SMITH'S BIKEWORKS INFORMATION SYSTEM"
@ 3,18 SAY ">> Production System Where-Used Analysis <<"
@ 5,29 SAY "Today's Date: "
?? DATE()
STORE " " TO DUMMY
DO WHILE DUMMY<>"M"
STORE " " TO STOCK_NUM
STORE 1 TO MFG_NUM
@ 11,1 SAY "Produce Where-Used Analysis For Stock Number " GET STOCK_NUM
STORE " " TO DUMMY
@ 21,1 SAY ;
"REPLACE VALUE AT CURSOR. 'M' HERE RETURNS TO THE PRODUCTION SYSTEM MENU,"
@ 22,1 SAY ;
"ANY OTHER KEY STARTS THE REPORT => ";
GET DUMMY
READ
STORE UPPER(DUMMY) TO DUMMY
IF DUMMY="M"
RETURN
ENDIF
* OPEN FILE
USE ASSEMBLY INDEX ASTOCKNO,SSTOCKNO
* ESTABLISH STACK AND STACK POINTER FOR CURRENT ASSEMBLY STOCK NUMBER
STORE 1 TO STACK_PTR
STORE "KEY"+STR(STACK_PTR,1,0) TO TEMP
STORE STOCK_NUM TO &TEMP
STORE &TEMP TO KEY
SEEK KEY
* IF NO RECORD FOUND FOR REQUESTED STOCK NUMBER, SETUP ERROR MESSAGE FLAG
IF (EOF() .OR. BOF())
STORE (1=1) TO NOT_FOUND
@ 16,12 SAY "RECORD NOT FOUND"
WAIT " PRESS ANY KEY AND ENTER A NEW STOCK NUMBER"
@ 16,0 SAY BLANK
@ 17,0 SAY BLANK
LOOP
ELSE
STORE (1=2) TO NOT_FOUND
* IF RECORD FOUND, STORE ITS LOCATION IN RECORD NUMBER STACK
STORE "RECORD"+STR(STACK_PTR,1,0) TO RECORD
STORE RECNO() TO &RECORD
STORE ASM_STKNO+" "+ASM_DESC TO COMPONENT
ENDIF
* GET FIRST ENTRY USING THE COMPONENT
SET INDEX TO SSTOCKNO,ASTOCKNO
SEEK KEY
IF (EOF() .OR. BOF())
STORE (1=1) TO NOT_FOUND
@ 16,12 SAY "THIS PART IS A MAJOR ASSEMBLY AND NOT A COMPONENT OF ANY"
@ 17,25 SAY "OTHER ASSEMBLIES"
WAIT " PRESS ANY KEY AND ENTER A NEW STOCK NUMBER"
@ 16,0 SAY BLANK
@ 17,0 SAY BLANK
@ 18,0 SAY BLANK
LOOP
ENDIF
* OUTPUT GOES TO PRINTER
SET PRINT ON
SET DEVICE TO PRINT
SET CONSOLE OFF
STORE 60 TO LINE_CNT
STORE 0 TO PAGE_NUM
STORE (1=1) TO PRINT_FLG
STORE 1 TO ASSEM_CNT
STORE 1 TO TOT_CNT
* USE STACK TO MOVE THROUGH ASSEMBLY LEVELS
DO WHILE STACK_PTR>0
* PAGE HEADING
IF LINE_CNT>=60
STORE PAGE_NUM+1 TO PAGE_NUM
@ 2,0 SAY "SMITH'S BIKEWORKS -- WHERE-USED ANALYSIS"
@ 2,50 SAY DATE()
@ 2,70 SAY "PAGE "
?? STR(PAGE_NUM,2,0)
@ 4,0 SAY "Stock Num"
@ 4,30 SAY "Description"
@ 4,55 SAY "Assemblies"
@ 4,70 SAY "Qty. Req'd"
@ 6,0 SAY COMPONENT
STORE 7 TO LINE_CNT
ENDIF
* PRINT RECORD IF PRINT FLAG IS SET
IF PRINT_FLG
IF STACK_PTR>1
STORE ASSEM_CNT TO QUANTITY
ELSE
STORE 1 TO QUANTITY
ENDIF
IF NOT_FOUND
@ LINE_CNT,40 SAY "Total Requirement For Assembly:"
@ LINE_CNT,72 SAY TOT_CNT PICTURE "99999.99"
STORE 1 TO TOT_CNT
STORE LINE_CNT+1 TO LINE_CNT
ELSE
@ LINE_CNT,0+5*(STACK_PTR) SAY ASM_STKNO
@ LINE_CNT,12+5*(STACK_PTR) SAY ASM_DESC
STORE TOT_CNT*ASSEM_CNT TO TOT_CNT
* PRINT ASSEMBLY COUNT
IF SUB_STKNO=" "
@ LINE_CNT,72 SAY QUANTITY PICTURE "99999.99"
ELSE
@ LINE_CNT,45+5*(STACK_PTR) SAY QUANTITY PICTURE "99999.99"
ENDIF
ENDIF
STORE LINE_CNT+1 TO LINE_CNT
ENDIF
* IF THERE IS NO LOWER LEVEL, TRY NEXT ENTRY, THEN MOVE UP THE STACK
IF SUB_STKNO=" ".OR.NOT_FOUND
STORE " " TO TEMP
STORE (1=2) TO NOT_FOUND
STORE 0 TO RECNOW
DO WHILE SUB_STKNO<>TEMP.AND.STACK_PTR>0.OR.RECNOW=RECNO()
STORE STACK_PTR-1 TO STACK_PTR
IF STACK_PTR>0
STORE "RECORD"+STR(STACK_PTR,1,0) TO RECORD
GO &RECORD
STORE &RECORD TO RECNOW
* STORE CURRENT ASSEMBLY NUMBER TO SEE IF NEXT RECORD MATCHES
STORE SUB_STKNO TO TEMP
SKIP +1
ENDIF
ENDDO
* TURN PRINT FLAG ON
STORE (1=1) TO PRINT_FLG
STORE RECNO() TO &RECORD
* SUBASSEMBLY IDENTIFIED SO GO DOWN A LEVEL
ELSE
* SET FLAG TO PRINT NEXT RECORD
STORE (1=1) TO PRINT_FLG
* STORE NUMBER OF ASSEMBLIES REQUIRED
STORE SUB_NOREQ TO ASSEM_CNT
STORE "RECORD"+STR(STACK_PTR,1,0) TO RECORD
STORE RECNO() TO &RECORD
STORE (1=2) TO NOT_FOUND
STORE ASM_STKNO TO MEMKEY
SEEK MEMKEY
STORE STACK_PTR+1 TO STACK_PTR
IF (EOF() .OR. BOF())
GO &RECORD
STORE (1=1) TO NOT_FOUND
ENDIF
ENDIF
ENDDO
EJECT
SET PRINT OFF
SET CONSOLE ON
SET DEVICE TO SCREEN
ENDDO
RETURN